package com.demo.listener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.jms.listener.SessionAwareMessageListener;

import javax.jms.*;

/**
 * Created by HYZ on 2018/1/27.
 *
 * Spring提供的,不是标准的Listener
 *
 * 当我们在使用MessageListener处理接收到的消息时我们需要发送一个消息通知对方我们已经收到这个消息了
 * 这时候就需要重新获取Connection或session
 */
public class ConsumerSessionAwareMessageListener implements SessionAwareMessageListener<TextMessage>{

    private Logger logger = LoggerFactory.getLogger(ConsumerSessionAwareMessageListener.class);

    private Destination queue;

    public void setQueue(Destination queue) {
        this.queue = queue;
    }

    /**
     *
     * @param message
     * @param session 可以用来发送消息的Session对象
     * @throws JMSException
     */
    @Override
    public void onMessage(TextMessage message, Session session) throws JMSException {
        logger.info("收到一条消息");
        logger.info("收到的消息内容为:{}" , message.getText());//相当于业务逻辑
        TextMessage textMessage = session.createTextMessage("我已收到消息并处理完成!");
        MessageProducer producer = session.createProducer(queue);
        producer.send(textMessage);
        logger.info("消息答复成功");
    }


}